package com.yeyks.commonReference.service.vip;

import com.yeyks.account.dal.domain.AccountInfo;
import com.yeyks.common.base.PageResult;
import com.yeyks.common.param.PageParam;
import com.yeyks.common.param.commission.MiniCommissionRecordParam;
import com.yeyks.common.result.commission.MiniCommissionRecordResult;
import com.yeyks.vip.dal.domain.MiniVipCommissionBill;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;


/**
 * <p>
 * 精选vip订单分佣明细表 服务类
 * </p>
 *
 * @author yun
 * @since 2019-09-18
 */
public interface MiniVipCommissionBillService extends IService<MiniVipCommissionBill> {

    /**
     * 精选vip订单佣金入账
     *
     * @param accountId 账户id
     * @param amount    金额
     * @param orderNo   订单号
     * @param type      类型1:卡酒店 2:卡运营商 3:卡服务商 4:卡服务商上级 5:非卡酒店 6:非卡运营商 7:非卡服务商 8:非卡服务商上级 9:卡商
     * @param cardNo    卡号
     * @param phone     卡对应用户手机号
     */
    void orderAdd(Integer accountId, Integer amount, String orderNo, Integer type, String cardNo, String phone);

    /**
     * 精选vip佣金提现
     *
     * @param accountId 账户id
     * @param amount    金额
     * @param orderNo   订单号
     */
    void remainDesc(Integer accountId, Integer amount, String orderNo);

    /**
     * 精选vip佣金提现拒绝或失败余额回退
     *
     * @param orderNo
     * @param remark
     */
    void remainAdd(String orderNo, String remark);

    /**
     * 本酒店佣金记录
     *
     * @param loginUser
     * @param param
     * @return
     */
    PageResult<MiniCommissionRecordResult> mineCommissionList(AccountInfo loginUser, MiniCommissionRecordParam param);

    /**
     * 通过账户类型获取vip分佣金额
     *
     * @param commissionTypes 佣金账户类型
     * @param accountId       账户id
     * @param orderNo         订单号
     * @return
     */
    Integer getVipCommissionAmount(Integer accountId, String orderNo, List<Integer> commissionTypes);
}
